#!/bin/bash

echo "=== 智能优化启动脚本 ==="
echo "检查并清理现有服务..."

# 检查并停止所有Gunicorn进程
if pgrep -f gunicorn > /dev/null; then
    echo "发现正在运行的Gunicorn进程，正在停止..."
    sudo pkill -9 gunicorn
    sleep 2
    echo "✅ 已停止所有Gunicorn进程"
else
    echo "没有发现运行中的Gunicorn进程"
fi

# 检查端口8000是否被占用
if netstat -tulpn 2>/dev/null | grep -q ":8000 "; then
    echo "警告: 端口8000仍被占用，尝试释放..."
    PORT_PID=$(sudo netstat -tulpn | grep ":8000 " | awk '{print $7}' | cut -d'/' -f1)
    if [ ! -z "$PORT_PID" ]; then
        sudo kill -9 $PORT_PID
        sleep 1
        echo "✅ 已释放端口8000"
    fi
fi

# 停止系统服务（如果存在）
if systemctl is-active voice-record &>/dev/null; then
    echo "停止系统服务 voice-record..."
    sudo systemctl stop voice-record
    echo "✅ 系统服务已停止"
fi

# 设置资源限制
echo "优化系统资源限制..."
ulimit -n 4096  # 增加文件描述符限制
echo "✅ 资源限制已设置为4096"

# 确保日志目录存在
if [ ! -d "logs" ]; then
    mkdir -p logs
    echo "✅ 创建日志目录"
fi

# 确保上传目录存在并有正确权限
if [ ! -d "app/static/uploads" ]; then
    mkdir -p app/static/uploads
    echo "✅ 创建上传目录"
fi

# 设置目录权限
sudo chmod -R 755 app/static/uploads
sudo chown -R $(whoami):$(whoami) app/static/uploads
echo "✅ 目录权限已设置"

# 使用优化参数启动Gunicorn
echo "启动优化的Gunicorn服务..."
export FLASK_ENV=production

# 获取脚本的绝对路径
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
cd "$SCRIPT_DIR"

# 启动Gunicorn并将输出重定向到日志文件
sudo nohup /home/never/miniforge3/bin/gunicorn \
  --workers 3 \
  --threads 4 \
  --max-requests 1000 \
  --max-requests-jitter 50 \
  --timeout 120 \
  --keep-alive 30 \
  --backlog 1024 \
  --bind 127.0.0.1:8000 \
  wsgi:app > logs/gunicorn.log 2>&1 &

# 保存PID到文件
echo $! > .gunicorn.pid
echo "✅ Gunicorn已在后台启动，进程ID: $!"

# 验证服务是否成功启动
sleep 2
if netstat -tulpn 2>/dev/null | grep -q ":8000 "; then
    echo "✅ 服务成功启动，正在监听8000端口"
else
    echo "⚠️ 警告: 服务可能未成功启动，请检查logs/gunicorn.log"
fi

# 检查Nginx是否运行
if systemctl is-active aa_nginx &>/dev/null; then
    echo "✅ Nginx服务正在运行"
else
    echo "⚠️ 警告: Nginx服务未运行，尝试启动..."
    sudo systemctl start aa_nginx
    if systemctl is-active aa_nginx &>/dev/null; then
        echo "✅ Nginx服务已成功启动"
    else
        echo "❌ 错误: 无法启动Nginx服务，请手动检查"
    fi
fi

echo ""
echo "=== 查看当前运行的Gunicorn进程 ==="
pgrep -af gunicorn || echo "未发现Gunicorn进程！"

echo ""
echo "=== 服务启动完成 ==="
echo "您现在可以通过 https://voice-record.com/ 访问服务"
echo "查看日志: tail -f logs/gunicorn.log"
echo "停止服务: sudo pkill -9 gunicorn"
